#ifndef __GAME_MODEL_BASE_OBJECT_HPP__
#define __GAME_MODEL_BASE_OBJECT_HPP__

#include "game_model\ih\game_model_iobject.hpp"

#include <QtCore\qstring.h>

namespace GameModel {

template< typename _TInterfaceType >
class BaseObject
	:	public _TInterfaceType
{

public:

	BaseObject( std::shared_ptr< ILocation > _startLocation, std::shared_ptr< ISize > _size, QImage* _objectPicture );

	virtual ~BaseObject();

public:

	/*virtual*/ ILocation const& getCurrentLocation() const;

	/*virtual*/ ISize const& getSize() const;

	/*virtual*/ QImage* getImage() const;

public:

	/*virtual*/ void accept( IObjectVisitor& _objectVisitor );

private:

	std::shared_ptr< ILocation > m_currentLocation;

	std::shared_ptr< ISize > m_size;

	QImage* m_objectPicture;

};

} // namespace GameModel

#endif // __GAME_MODEL_BASE_OBJECT_HPP__
